#ifndef SETTINGS_H_
#define SETTINGS_H_

#include <string>


class Settings
{
private: /* Should only be statc, so constructors are private to prohibit instanciation */
	Settings();
	virtual ~Settings();
	
public:
	static bool readConfig(std::string fileName);
	static void printConfig(int atDebugLevel);
	
public:
	/* Output section */
	static int  debugLevel;				/* output level for Debug.h */
	static bool saveImages;				/* Shall images (i.e. showing features and/or correlation) be saved after
										 * being displayed? */
	static bool showFeatures;			/* Shall images showing the detected features be displayed? */
	static bool showCorrelation;		/* Shall images showing the correlating features be displayed? */
	static bool showImages;				/* Shall results be displayed at all? ("NO" overrules showFeatures and
										 * showCorelation) */
	
	
	static unsigned int    ransacMinNumOfSupporters;					/* Minimum number of samples needed to support a RANSAC solution */
	static int maxFeaturePoints;		/* Maximum number of feature points to detect per image */
	
	
	/* correlation section */
	static int correlationNeighborhood; /* Size of the neighborhood for feature point correlation
										 * in each direction. A window of 9x9 thus means a neighborhood
										 * size of 4 (4+1+4 = 9). */
	static double correlationVNCThreshold;		/* The minimum VNC value a feature point pair must have
										 * to be considered correlating */
	static double maxImageOverlap;		/* The maximum area two (nadir) images will overlap. Used to restrict search space. */
	
	/* grid setup */
	static int horizontalGridPoints;
	static int verticalGridPoints;

	static int pyramidalDepth;
	
private:
	
	/* just for nicety */
	static std::string featureDetectionTypeName;
	static std::string debugLevelName;
	
};

#endif /*SETTINGS_H_*/
